/**
 * 初始化试题结构体数组
 */
function initArrAllTest(_jsonAllTest, _arrUserTest, _examHistoryID) {
    if (_jsonAllTest === '' || !_jsonAllTest) {
        return;
    }
    let _arrAllTest = [];
    let index = 0; //数组Numbers的索引
    let styleItems = _jsonAllTest.StyleItems;
    for (let i = 0; i < styleItems.length; i++) {
        let testType = styleItems[i].Type;
        let testItems = styleItems[i].TestItems;
        for (let j = 0; j < testItems.length; j++) {
            if (testType === 'A3TEST') {
                let a3items = testItems[j].A3TestItems;
                for (let k = 0; k < a3items.length; k++) {

                    let answers = a3items[k].Answer.split('');

                    _arrAllTest[index] = new _OneTest();
                    _arrAllTest[index].examHistoryID = _examHistoryID;
                    _arrAllTest[index].childTableName = testType;
                    _arrAllTest[index].allTestID = testItems[j].AllTestID;
                    _arrAllTest[index].cptID = testItems[j].CptID;
                    _arrAllTest[index].sbjID = testItems[j].SbjID;
                    _arrAllTest[index].srcID = testItems[j].SrcID;
                    _arrAllTest[index].styleID = testItems[j].styleID;
                    _arrAllTest[index].score = styleItems[i].Score;
                    let a3SelectedItems = a3items[k].SelectedItems;
                    for (let f = 0; f < a3items[k].SelectedItems.length; f++) {
                        for (let g = 0; g < answers.length; g++) {
                            if (answers[g] == a3items[k].SelectedItems[f].ItemName) {
                                _arrAllTest[index].answer += a3items[k].SelectedItems[f].Content + ';';
                            }

                        }
                    }

                    _arrAllTest[index].frontTitle = testItems[j].FrontTitle;
                    _arrAllTest[index].title = a3items[k].Title;
                    _arrAllTest[index].explain = testItems[j].Explain;
                    _arrAllTest[index].examAnswer = a3items[k].Answer;
                    index++;
                }
            } else if (testType === 'BTEST') {
                let bitems = testItems[j].BTestItems;
                for (let k = 0; k < bitems.length; k++) {

                    let answers = bitems[k].Answer.split('');

                    _arrAllTest[index] = new _OneTest();
                    _arrAllTest[index].examHistoryID = _examHistoryID;
                    _arrAllTest[index].childTableName = testType;
                    _arrAllTest[index].allTestID = testItems[j].AllTestID;
                    _arrAllTest[index].cptID = testItems[j].CptID;
                    _arrAllTest[index].sbjID = testItems[j].SbjID;
                    _arrAllTest[index].srcID = testItems[j].SrcID;
                    _arrAllTest[index].styleID = testItems[j].styleID;
                    _arrAllTest[index].score = styleItems[i].Score;

                    for (let f = 0; f < testItems[j].SelectedItems.length; f++) {
                        for (let g = 0; g < answers.length; g++) {
                            if (answers[g] == testItems[j].SelectedItems[f].ItemName) {
                                _arrAllTest[index].answer += testItems[j].SelectedItems[f].Content + ';';
                            }

                        }
                    }

                    _arrAllTest[index].frontTitle = testItems[j].FrontTitle;
                    _arrAllTest[index].title = bitems[k].Title;
                    _arrAllTest[index].explain = testItems[j].Explain;
                    _arrAllTest[index].examAnswer = bitems[k].Answer;
                    index++;
                }
            } else if (testType === 'ATEST' || testType === 'JDTEST' || testType === 'PDTEST' || testType === 'TKTEST' || testType === 'XTEST') {

                if (testType === 'TKTEST') {
                    var answers = testItems[j].Answer.toString();
                } else {
                    var answers = testItems[j].Answer.split('');
                }

                _arrAllTest[index] = new _OneTest();
                _arrAllTest[index].examHistoryID = _examHistoryID;
                _arrAllTest[index].childTableName = testType;
                _arrAllTest[index].allTestID = testItems[j].AllTestID;
                _arrAllTest[index].cptID = testItems[j].CptID;
                _arrAllTest[index].sbjID = testItems[j].SbjID;
                _arrAllTest[index].srcID = testItems[j].SrcID;
                _arrAllTest[index].styleID = testItems[j].styleID;
                _arrAllTest[index].score = styleItems[i].Score;

                if (testType === 'ATEST' || testType === 'XTEST') {
                    for (let f = 0; f < testItems[j].SelectedItems.length; f++) {
                        for (let g = 0; g < answers.length; g++) {
                            if (answers[g] == testItems[j].SelectedItems[f].ItemName) {
                                _arrAllTest[index].answer += testItems[j].SelectedItems[f].Content + ';';
                            }

                        }
                    }
                } else if (testType === 'TKTEST') {
                    _arrAllTest[index].answer = testItems[j].Answer.toString();
                } else {
                    _arrAllTest[index].answer = testItems[j].Answer;
                }

                _arrAllTest[index].frontTitle = testItems[j].FrontTitle;
                _arrAllTest[index].title = testItems[j].Title;
                _arrAllTest[index].explain = testItems[j].Explain;
                _arrAllTest[index].userAnswer = testItems[j].Answer;
                index++;
            } else {
                G_Prg.
                throw('程序运行错误，TestData._initArrAllTest ：testType = "' + testType + '"，无法解析题型');
            }
        }
    }
    return _arrAllTest;
    // for (let m = 0; m < _arrUserTest.length; m++) {
    //     let userTest = _arrUserTest[m]; //包含用户收藏、用户笔记的一道试题
    //     let allTestId = userTest.AllTestID + ''; //试题Id
    //     let subTestId = userTest.ChildTableID + ''; //小题Id，针对A3题型和B题型的小题
    //     let errorCount = userTest.ErrorReplyCount ? userTest.ErrorReplyCount : 0; // 答错总人数
    //     let favCount = userTest.FavCount ? userTest.FavCount : 0; // 收藏总人数
    //     for (let i = 0; i < styleItems.length; i++) {
    //         let testType = styleItems[i].Type;
    //         let testItems = styleItems[i].TestItems;
    //         for (let j = 0; j < testItems.length; j++) {
    //             if (testItems[j].AllTestID + '' == allTestId) {
    //                 if (testType === 'A3TEST') {
    //                     let a3items = testItems[j].A3TestItems;
    //                     for (let k = 0; k < a3items.length; k++) {

    //                         let answers = a3items[k].Answer.split('');

    //                         if (a3items[k].A3TestItemID == subTestId) {
    //                             _arrAllTest[index] = new _OneTest();
    //                             _arrAllTest[index].examHistoryID = _examHistoryID;
    //                             _arrAllTest[index].allTestID = userTest.AllTestID;
    //                             _arrAllTest[index].childTableID = userTest.ChildTableID;
    //                             _arrAllTest[index].childTableName = testType;
    //                             _arrAllTest[index].cptID = testItems[j].CptID;
    //                             _arrAllTest[index].sbjID = testItems[j].SbjID;
    //                             _arrAllTest[index].srcID = testItems[j].SrcID;
    //                             _arrAllTest[index].styleID = testItems[j].styleID;
    //                             _arrAllTest[index].score = styleItems[i].Score;
    //                             let a3SelectedItems = a3items[k].SelectedItems;
    //                             for (let f = 0; f < a3items[k].SelectedItems.length; f++) {
    //                                 for (let g = 0; g < answers.length; g++) {
    //                                     if (answers[g] == a3items[k].SelectedItems[f].ItemName) {
    //                                         _arrAllTest[index].answer += a3items[k].SelectedItems[f].Content + ';';
    //                                     }

    //                                 }
    //                             }

    //                             _arrAllTest[index].frontTitle = testItems[j].FrontTitle;
    //                             _arrAllTest[index].title = a3items[k].Title;
    //                             _arrAllTest[index].explain = testItems[j].Explain;
    //                             _arrAllTest[index].userNote = userTest.UserNote;
    //                             _arrAllTest[index].errorReplyCount = errorCount;
    //                             _arrAllTest[index].favCount = favCount;
    //                             _arrAllTest[index].isRight = userTest.IsRight;
    //                             _arrAllTest[index].examAnswer = a3items[k].Answer;
    //                             index++;
    //                         }
    //                     }
    //                 } else if (testType === 'BTEST') {
    //                     let bitems = testItems[j].BTestItems;
    //                     for (let k = 0; k < bitems.length; k++) {

    //                         let answers = bitems[k].Answer.split('');

    //                         if (bitems[k].BTestItemID == subTestId) {
    //                             _arrAllTest[index] = new _OneTest();
    //                             _arrAllTest[index].examHistoryID = _examHistoryID;
    //                             _arrAllTest[index].allTestID = userTest.AllTestID;
    //                             _arrAllTest[index].childTableID = userTest.ChildTableID;
    //                             _arrAllTest[index].childTableName = testType;
    //                             _arrAllTest[index].cptID = testItems[j].CptID;
    //                             _arrAllTest[index].sbjID = testItems[j].SbjID;
    //                             _arrAllTest[index].srcID = testItems[j].SrcID;
    //                             _arrAllTest[index].styleID = testItems[j].styleID;
    //                             _arrAllTest[index].score = styleItems[i].Score;

    //                             for (let f = 0; f < testItems[j].SelectedItems.length; f++) {
    //                                 for (let g = 0; g < answers.length; g++) {
    //                                     if (answers[g] == testItems[j].SelectedItems[f].ItemName) {
    //                                         _arrAllTest[index].answer += testItems[j].SelectedItems[f].Content + ';';
    //                                     }

    //                                 }
    //                             }

    //                             _arrAllTest[index].frontTitle = testItems[j].FrontTitle;
    //                             _arrAllTest[index].title = bitems[k].Title;
    //                             _arrAllTest[index].explain = testItems[j].Explain;
    //                             _arrAllTest[index].userNote = userTest.UserNote;
    //                             _arrAllTest[index].errorReplyCount = errorCount;
    //                             _arrAllTest[index].favCount = favCount;
    //                             _arrAllTest[index].isRight = userTest.IsRight;
    //                             _arrAllTest[index].examAnswer = bitems[k].Answer;
    //                             index++;
    //                         }
    //                     }
    //                 } else if (testType === 'ATEST' || testType === 'JDTEST' || testType === 'PDTEST' || testType === 'TKTEST' || testType === 'XTEST') {

    //                     if (testType === 'TKTEST') {
    //                         var answers = testItems[j].Answer.toString();
    //                     } else {
    //                         var answers = testItems[j].Answer.split('');
    //                     }

    //                     _arrAllTest[index] = new _OneTest();
    //                     _arrAllTest[index].examHistoryID = _examHistoryID;
    //                     _arrAllTest[index].allTestID = userTest.AllTestID;
    //                     _arrAllTest[index].childTableID = userTest.ChildTableID;
    //                     _arrAllTest[index].childTableName = testType;
    //                     _arrAllTest[index].cptID = testItems[j].CptID;
    //                     _arrAllTest[index].sbjID = testItems[j].SbjID;
    //                     _arrAllTest[index].srcID = testItems[j].SrcID;
    //                     _arrAllTest[index].styleID = testItems[j].styleID;
    //                     _arrAllTest[index].score = styleItems[i].Score;

    //                     if (testType === 'ATEST' || testType === 'XTEST') {
    //                         for (let f = 0; f < testItems[j].SelectedItems.length; f++) {
    //                             for (let g = 0; g < answers.length; g++) {
    //                                 if (answers[g] == testItems[j].SelectedItems[f].ItemName) {
    //                                     _arrAllTest[index].answer += testItems[j].SelectedItems[f].Content + ';';
    //                                 }

    //                             }
    //                         }
    //                     } else if (testType === 'TKTEST') {
    //                         _arrAllTest[index].answer = testItems[j].Answer.toString();
    //                     } else {
    //                         _arrAllTest[index].answer = testItems[j].Answer;
    //                     }

    //                     _arrAllTest[index].frontTitle = testItems[j].FrontTitle;
    //                     _arrAllTest[index].title = testItems[j].Title;
    //                     _arrAllTest[index].explain = testItems[j].Explain;
    //                     _arrAllTest[index].userNote = userTest.UserNote;
    //                     _arrAllTest[index].errorReplyCount = errorCount;
    //                     _arrAllTest[index].favCount = favCount;
    //                     _arrAllTest[index].isRight = userTest.IsRight;
    //                     _arrAllTest[index].userAnswer = testItems[j].Answer;
    //                     index++;
    //                 } else {
    //                     G_Prg.
    //                     throw('程序运行错误，TestData._initArrAllTest ：testType = "' + testType + '"，无法解析题型');
    //                 }
    //             }
    //         }
    //     }
    // }
    // return _arrAllTest;
}

/**
 * 一道试题的数据结构
 */
function _OneTest() {
    this.examHistoryID = ''; //答题历史id
    this.allTestID = 0; //试题的AllTestID
    this.childTableID = -1; //小题id（针对A3题型、B题型）
    this.childTableName = ''; //试题所属题型 testType
    this.cptID = 0; //章节ID
    this.sbjID = 0; //科目ID
    this.srcID = 0; //来源ID
    this.styleID = 0; //试题类型ID
    this.score = 0; //每题分数
    this.answer = ''; //试题答案
    this.frontTitle = ''; //共用题干，针对A3Test
    this.title = ''; //试题标题
    this.explain = ''; //解题思路
    this.userNote = ''; //解题思路
    this.errorReplyCount = 0; //答错人数
    this.favCount = 0; //收藏人数
    this.isRight = 0; //是否答对
    this.examAnswer = '';
}

export default initArrAllTest;
